
import router from './router'
import store from './store'
// 导入工具组件 中的auth
import { getTime } from '@/utils/auth'

// 判断token超时 这里封装一个函数 return一个布尔值

// 获取token的时间
const tokenTime = getTime()
// 获取现在的时间
const nowTime = Date.now()
// 设定一个超时时间
const lostTime = 60 * 60
// 校验token失效的函数
function lostToken() {
  return (nowTime - tokenTime) / 1000 > lostTime
}
// 白名单如果有白名单就放行
const whiteList = ['/login', '/404']
// 获取userId 用来判断下面的路由跳转
// const uId = store.state.user.userinfo
// console.log(uId)
// console.log(store.state.user.userinfo)
// 路由前置首位
router.beforeEach(async(to, from, next) => {
  // 拿到vuex中的token
  const token = store.state.user.token
  // console.log(token)
  // 如果有token
  if (token) {
    if (lostToken()) { // 如果 token超时
      store.commit('user/deleteToken')// 清空token
      store.commit('user/deleteUserInfo')// 清空 用户数据
      return Promise.reject(new Error('登录过期'))
    }
    if (to.path === '/login') {
      next('/')
    } else {
      if (!store.state.user.userinfo.userId) {
        await store.dispatch('user/getUsinfo')
      }
      next()
    }
  } else {
    if (whiteList.includes(to.path)) {
      next()
    } else {
      next('/login')
    }
  }
})
